package com.dragon.mmochat.service;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.opensocial.client.OpenSocialRequestException;

import com.dragon.mmochat.MmochatConstant;
import com.dragon.mmochat.model.enumType.MmochatWorkStationType;
import com.skymobi.social.client.SkySocialClient;

public class MmochatFeedService {
	public void init() {
		// 应用需要初始化client,这些参数都是类的静态参数，意味着只要初始化一次就能全局使用(如可在spring里配置一次)
		Map<String, String> properties = new HashMap<String, String>();// properties
		// 初始化client参数
		boolean debug;// 是否打印debug信息,注意生产环境请关闭debug模式
		String consumerKey; // consumerKey是斯凯分配给每个合作方的应用账号
		String comsumerSecret;// comsumerSecret 账号对应的密码
		if (MmochatConstant.workStation == MmochatWorkStationType.斯凯测试
				|| MmochatConstant.workStation == MmochatWorkStationType.青龙自测) {
			// 斯凯接口服务地址，测试环境
			String skyOpenSocialServerAddr = "115.238.91.229:9999";
			// 校验token有效性接口地址，测试环境
			String skyTokenCheckServerUrl = "http://115.238.91.229:6011/wapgate/services/check/index!check.action";
			properties.put("REST_BASE_URI", "http://" + skyOpenSocialServerAddr
					+ "/sky-social/social/rest");
			properties.put("RPC_ENDPOINT", "http://" + skyOpenSocialServerAddr
					+ "/sky-social/social/rpc");
			properties.put("TOKEN_VALIDATOR", skyTokenCheckServerUrl);
			debug = true;
			consumerKey = "test";
			comsumerSecret = "test";
		} else {
			// 斯凯接口服务地址,现网环境
			String skyOpenSocialServerAddr = "sns.51mrp.com:8080";
			// 校验token有效性接口地址，现网环境
			String skyTokenCheckServerUrl = "http://token.51mrp.com:10015/wapgate/services/check/index!check.action";
			properties.put("REST_BASE_URI", "http://" + skyOpenSocialServerAddr
					+ "/sky-social/social/rest");
			properties.put("RPC_ENDPOINT", "http://" + skyOpenSocialServerAddr
					+ "/sky-social/social/rpc");
			properties.put("TOKEN_VALIDATOR", skyTokenCheckServerUrl);
			debug = false;
			consumerKey = "test";
			comsumerSecret = "test";
		}

		SkySocialClient.init(consumerKey, comsumerSecret, debug, properties);
	}

	/*
	 * String formatBody
	 * ="${fromSkyid}真是武学奇才，在${appName}的比武擂台大赛中，击败了${toSkyid}";
	 */
	public static void addFeed(long fromSkyid, String formatBody) {
		if (false) {
			// 通过当前skyid获得一个client实例（skyid是斯凯唯一用户标识id）
			SkySocialClient client = SkySocialClient.getClient(fromSkyid);
			// 该实例是观察者身份

			final Map<String, Object> map = new HashMap<String, Object>();
			map.put("fromSkyid", fromSkyid);
			// map.put("toSkyid", toSkyid);

			try {
				// 例子1，写入到当前应用的feed动态数据，不写入到和其他应用共享的公共区域
				// String category = "test";//
				// 子分类，如果写入的时候带此参数，查询的时候可以读取此分类。如果不需要此参数。可以传null;
				// client.createNormalActivity(skyid, category, formatBody,
				// map);

				// 例子2 除了写入到当前应用的feed动态数据外，还写入到和其他应用共享的公共区域
				// 此方法就是合作方要使用的方法，这种feed除了会写到本应用里去，也会写到公共区域，斯凯会将这部分feed显示在斯凯其他wap，客户端等应用上。
				// 注意公共区域的动态条数对每个用户都有一定条数限制。请写入比较重要的动态。请勿写入频繁发生的动态。
				client
						.createImportantActivity(fromSkyid, null, formatBody,
								map);
			} catch (OpenSocialRequestException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
